C++ 第三方库编译

C++ 第三方库编译
DustWind引言
本文旨在阐述 C++ 第三方库的编译与使用,具体参考了 B 站大佬 无限十三年 的视频:CMake 开源库的编译与使用
一.在 Windows 系统上编译与使用第三方库
使用 CMake 管理与编译 C++ 第三方库的流程包含两个方面,一个是编译库,一个是使用库。
1.编译库
下面是编译第三方库的流程图:
flowchart TD
A([Start]) --> B[下载源代码]
B --> C[用 CMake 配置生成项目文件]
C --> D[编译项目代码]
D --> E[安装到指定路径]
E --> F([End])
%% 定义节点样式,例如将为开始和结束节点填充为绿色
classDef startEnd fill:#90EE90
class A,F startEnd
2.使用库
下面是使用第三方库的流程图:
flowchart TD
A([Start]) --> B[建立项目并编写代码]
B --> C[编写 CMakeLists.txt 配置第三方库]
C --> D[生成项目]
D --> E[编译运行]
E --> F([End])
%% 定义节点样式,例如将为开始和结束节点填充为绿色
classDef startEnd fill:#90EE90
class A,F startEnd
3.编译与使用第三方库
这里以数据序列化的常用库 jsoncpp 1.9.6 版本为例进行编译使用:
前期准备
- 首先下载源代码,途径是多种多样的,我这里通过 jsoncpp GitHub 仓库 或者 jsonncpp Gitee 仓库 获取。注意切换到自己需要的版本标签拉取。
[!tip] 注意
根据实际情况新建下面几个文件夹(这几个文件夹可以在任意自己需要的地方):
- build_vs:用于构建 msvc 的 jsoncpp 项目
- install_vs:用于在 msvc 环境中生成并安装 jsoncpp 的头文件以及库文件。方便后续项目使用。
- build_mingw:用于构建 mingw 环境的 jsoncpp 项目
- install_mingw:用于在 mingw 环境中生成并安装 jsoncpp 的头文件以及库文件。方便后续项目使用。
笔者的配置路径做如下参考:
1 | #-MSVS编译--------------------------------------------------------------------------# |
[!tip] 注意
如果不采用本文这种安装方式也可以参考 恋恋风辰大佬 的方式编译与使用。
对于一个 C++ 项目,最终会包含三个目录:include 、 lib 、 bin,可以自己去找这些项目的然后集中放置在一处,当然,也可以通过刚刚的 install 目录进行统一安装。
1.MSVC 环境下编译与使用 jsoncpp
编译阶段
- 通过 CMake(cmake-gui) 程序打开此第三方库,具体的配置为:
Where is the source code项选择第三方库的主CMakeLists.txt所在的路径。Where to build the binaries项选择刚刚创建的build_vs目录。
详细配置图如下所示:
- 然后点击
Configure按钮并选择生成工程类型,这里选择MSVC版本,详细如下图所示:
- 然后在
Search栏输入 install 更改安装路径(install_vs目录),这样后续第三方库编译之后能直接将头文件,库文件,可执行文件等直接安装到这一目录。然后直接生成工程即可。具体可见下图:
- 在文件资源管理器中打开
build_vs目录,找到解决方案并打开。
- 选择
debug模式并将INSTALL项设为启动项目,然后右键生成,详情如下图所示:
- 进入
install_vs根目录,可以看到生成了头文件,库文件以及可执行文件。
至此,MSVC 版本的 jsoncpp 库编译完成。
使用阶段
- 进入第三方库源代码根目录可以看到有个
example文件夹,里面有一部分例程供测试环境使用。这里拷贝一个readFromString工程到合适的地方。然后进入此工程的根目录,创建CMakeLists.txt文件以及build文件夹,完成之后工程结构如下图所示:
- 用合适的编辑器打开
CMakeLists.txt文件然后输入如下内容并保存:
1 | cmake_minimum_required(VERSION 3.5) |
- 进入
build目录打开终端并执行如下命令生成 VS 工程:
1 | 使用 cmake 命令构建生成工程 |
生成结果如下所示:
[!tip] 注意
这里使用这一条简洁命令是因为 Windows 系统下默认指定 MSVC 编译器,因此无需指定 cmake 命令的-G参数。想要查看默认编辑器,可以通过cmake --help查看。
- 然后打开
build目录生成的解决方案。将 readFromString 项设为启动项目并执行生成操作。
[!tip] 注意
这里需要注意的是,在 readFromString 项右键选中,然后依次点击属性->配置属性->链接器->系统,在子系统栏选择控制台,不然此工程编译会报错。
- 编译成功后,在 Visual Studio 中运行此程序,最后弹出控制台结果如下所示则为成功。
至此,MSVC 版本的 jsoncpp 库编译使用流程便梳理清楚了。
2.MinGW 环境下编译与使用 jsoncpp
编译阶段
- 通过 CMake(cmake-gui) 程序打开此第三方库,具体的配置为:
Where is the source code项选择第三方库的主CMakeLists.txt所在的路径。Where to build the binaries项选择刚刚创建的build_mingw目录。
详细配置图如下所示:
- 然后点击
Configure按钮并选择生成工程类型,这里选择MinGW版本,详细如下图所示:
- 然后在
Search栏输入 install 更改安装路径(install_mingw目录),这样后续第三方库编译之后能直接将头文件,库文件,可执行文件等直接安装到这一目录。然后直接生成工程即可。具体可见下图:
- 进入
build_mingw目录并在此目录打开终端,然后输入下面命令构建编译 MinGW 版本的第三方库。
1 | cmake --build . -j4 |
具体执行如下图所示:
- 然后执行下述命令安装 jsoncpp 库到
install_mingw目录
1 | cmake --install . |
具体执行如下所示:
- 进入
install_mingw根目录,可以看到生成了头文件,库文件以及可执行文件。
至此,MinGW 版本的 jsoncpp 库编译完成。
使用阶段
- 进入第三方库源代码根目录可以看到有个
example文件夹,里面有一部分例程供测试环境使用。这里拷贝一个stringWrite工程到合适的地方。然后进入此工程的根目录,创建CMakeLists.txt文件以及build文件夹,完成之后工程结构如下图所示:
- 用合适的编辑器打开
CMakeLists.txt文件然后输入如下内容并保存:
1 | cmake_minimum_required(VERSION 3.5) |
- 进入
build目录,执行如下命令完成示例项目构建:
1 | cmake -S .. -G "MinGW Makefiles" |
运行指令结果如下所示:
- 紧接着在
build目录,执行如下命令进行项目编译:
1 | cmake --build . |
运行指令结果如下所示:
- 依旧是在
build目录运行编译生成的可执行程序,示例结果如下所示:
至此,MinGW 版本的 jsoncpp 库编译使用流程便梳理清楚了。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果






























